﻿/**
 * @file MaterialsViscoElasticSolidsWapper.h
 * @brief 粘弹性材料 相关的python接口
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
#ifndef _PY_SEA_MATERIALViscoElasticSolids_WAPPER_H___
#define _PY_SEA_MATERIALViscoElasticSolids_WAPPER_H___

#include <QString>
#include <QObject>
#include "PythonInterfaceAPI.h"
#include "FITK_Component/FITKAcousticsPhysics/PyFITKMaterialsViscoElasticSolids.h"

class ViscoElasticSolids : public Acoustics::PyFITKMaterialsViscoElasticSolids
{
public:
    explicit ViscoElasticSolids(const QString& name);
    explicit ViscoElasticSolids();
    virtual ~ViscoElasticSolids() = default;
};

/**
 * @brief 粘弹性材料相关PYTHON接口装饰
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
class PythonInterfaceAPI MaterialsViscoElasticSolidsWapper : public QObject
{
    Q_OBJECT
public slots:
    ViscoElasticSolids* new_ViscoElasticSolids();

    void delete_ViscoElasticSolids(ViscoElasticSolids* obj);
    /**
     * @brief 在Python解释器中通过名称获取对象
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    ViscoElasticSolids* static_ViscoElasticSolids_GetViscoElasticSolids(const QString& name);
    /**
     * @brief 获取名称
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    QString getName(ViscoElasticSolids* obj);
    /**
     * @brief  设置名称
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setName(ViscoElasticSolids* obj, const QString& name);
    /**
     * @brief  设置属性
     * @param[i]  density：密度
     * @param[i]  poissonRatio：泊松比
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setDensityPoissonRatio(ViscoElasticSolids* obj, double density, double poissonsRatio);
    /**
     * @brief  设置频谱
     * @param[i]  shearModulus：剪切模量
     * @param[i]  dampingSpectrum:阻尼
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void setSpectra(ViscoElasticSolids* obj, const QString& shearModulus, const QString& dampingSpectrum);

    /**
     * @brief  创建材料
     * @param[i]  name：材料名称
     * @author wangning (2185896382@qq.com)
     * @date   2024-12-03
     */
    void createMaterial(ViscoElasticSolids* obj, const QString& name);
};

#endif
